/*
 * @Description: file content
 * @Author: ZeT1an
 * @Date: 2022-01-17 10:09:47
 * @LastEditors: ZeT1an
 * @LastEditTime: 2022-01-17 10:33:39
 * @LastEditContent: 
 */
/**
 * 不管什么编程语言，在代码执行过程中都是需要分配内存的，2种形式
 * 1.自动分配内存，如Java，JavaScript, Python
 * 2.手动分配内存，如C,C++
 */

/**
 * 内存管理的生命周期，3步
 * 1.分配申请需要的内存
 * 2.使用分配的内存（存放一些东西，如对象）
 * 3.当不需要再使用时，将其释放。
 */

/**
 * JS为变量分配内存的的2种方式
 * 1.JS为基本数据类型分配内存，五会在执行时，直接在栈空间进行分配。
 * 2.JS为复杂数据类型分配内存，会在堆内存中开辟一块空间，并且将这块空间的指针返回值变量引用
 */

/**
 * 垃圾回收器的英文名Garbage Collection，简称GC
 */

/**
 * 常见的GC算法，2个，并介绍
 * 1.引用计数
 * 当一个对象被引用时，对象引用计数+1，当对象引用计数为0时，会被销毁
 * 有一个弊端，会产生循环引用的情况
 * 2.标记清除
 * 设置一个根对象（root Object），GC会定期从根对象出发查找所有被引用的对象，对于那些没找到的对象，就认为是不可用的
 * 很好的解决了循环引用的情况
 * JS引擎普遍使用标记清除的算法，类似于V8这样的JS引擎，会结合其他的算法做优化。
 */